Most applications found on the Internet today are designed based on the simple and straightforward client-server (C-S) model. The C-S model requires a powerful server and brings severe congestion now and then due to its centralized characteristics.
To avoid the drawbacks of the C-S model, some are turning to peer-to-peer technology, which is more robust and may be more efficient, than the pure C-S model. With peer-to-peer streaming, multiple users participating in a video streaming session are organized into an application-level multicast tree structure. All users except the root (i.e. the server) and the leaves (i.e. users that have no egressive links to other users) not only receive data but also relay the data to downstream users.
A diagram of an application-level multicast tree structure 100 is shown in FIG. 1. The application-level multicast tree structure 100 includes a server 102 that serves as the root of the structure. The server 102 communicates with multiple first-tier clients 104, 106, which in turn communicate with multiple second-tier clients 108, 110, 112, 114 (i.e. “leaves”). The server 102 communicates with the first-tier clients 104, 106 which, in turn, communicate with the second-tier clients 108-114 via vertical communication channels 120.
The application-level multicast tree structure 100 is a limited depiction and, in practice, can have many more than three tiers and/or more or less clients located on each tier.
The application-level multicast mimics behavior of an Internet Protocol (IP) multicast in bandwidth efficiency, i.e. there is only one copy of data transmitted over any shared link. However, that copy of data is conveyed via unicast. In other words, the application-level multicast tree is built out of a set of unicast sessions.
Application-level multicast gives rise to several problems—such as network congestion, bandwidth inefficiency, high server load, etc.—that can easily denigrate the end user streaming experience.